package cn.tedu.ssm.service;

import cn.tedu.ssm.mapper.UserMapper;
import cn.tedu.ssm.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service
public class UserService {

    @Autowired
    private UserMapper mapper;

    /**
     * 分页查询数据
     * @param page 页面上的页码数
     * @param size 页面上的页项数（一页显示多少条数据）
     */
    public Map<String, Object> list(Integer page, Integer size){
        // 将页项数转换为数据限制量
        int limit = size == null || size < 1 ? 10 : size;
        // 处理前端提交的页码数
        page = page == null || page < 1 ? 1 : page;
        // 根据页码数和限制量求偏移量
        int offset = (page - 1) * limit;
        // 分页查询数据
        List<User> users = mapper.find(offset, limit);
        // 查询总数
        Long count = mapper.count();
        // 构造 Map 对象
        Map<String, Object> map = new HashMap<>();
        map.put("users", users);
        map.put("count", count);
        return map;
    }

    /**
     * 检查账号和密码
     * @param username 用户名
     * @param password 密码
     */
    public Long checkUsernameAndPassword(String username, String password) {
        if (!mapper.exists(username)) {
            // 账号不存在，返回 -1
            return -1L;
        }
        // 根据账号和密码查找其 ID
        Long id = mapper.findIdByUsernameAndPassword(username, password);
        if (id == null || id < 1) {
            // 账号和密码不匹配，返回 -2
            return -2L;
        }
        if (mapper.isDeleted(id)) {
            // 账号已经被删除，返回 -3
            return -3L;
        }
        if (mapper.isDisabled(id)) {
            // 账号已经被禁用，返回 -4
            return -4L;
        }
        return id;
    }
}



